package top.ztf.erp.service;

import com.github.pagehelper.PageInfo;
import top.ztf.erp.domain.User;
import top.ztf.erp.vo.PermissionVo;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface UserService {
     /**
      * 分页查询用户
      * @param pageNo
      * @param pageSize
      * @return
      */
     PageInfo<User> getUserList(String pageNo, String pageSize);

     /**
      * 根据id查询用户
      * @param id
      * @return
      */
     User getUserById(String id);

     /**
      * 修改用户信息
      * @param user
      * @return
      */
     int updateUser(User user);

     /**
      * 增加用户
      * @param user
      * @return
      */
     int addUser(User user);

    PageInfo<User> searchList(String searchName, String startTime, String endTime, String lock, String pageNo, String pageSize);

    /**
     * 查询用户已分配的角色和未分配的角色
     * @param id
     * @return
     */
    Map<String, Object> getAssignById(String id);

    /**
     * 给用户分配角色
     * @param userId
     * @param parameterValues
     * @return
     */
    int updateAssign(String userId, String[] parameterValues);

    /**
     * 删除用户
     * @param parameterValues 用户的id
     * @return
     */
    int deleteUser(String[] parameterValues);

    /**
     * 登录
     * @param account 账号
     * @param password 密码
     * @param ip 登录地址ip
     * @return
     */
    User login(String account, String password,String ip);

    /**
     * 获取该用户的所有权限
     * @param id
     * @return
     */
    List<PermissionVo> getPermissionByUser(String id);

    /**
     * 获取该角色在页面显示的菜单
     * @param user
     * @return
     */
    List<Map<String, String>> getPermissionByMenu(User user);

    /**
     * 获取所有权限的url
     * @param user
     * @return
     */
    Set<String> getPermissionByButton(User user);
}
